The present disclosure relates to the operation of a linear feedback shift register and more specifically, to a vector programmable linear feedback shift register.
In today's environment linear feedback shift registers (LFSR) are used to produce pseudorandom data needed for various applications. These applications include statistical analysis, random data simulations and random sampling. Other applications that utilize pseudorandom data include electronic games and cryptography. One technique for producing pseudorandom data includes the use of hashing algorithms. Linear feedback shift registers can be configured to reduce the probability of repeating random numbers by using larger shift registers or by adjusting the taps of the shift registers. Other benefits include a less complex hardware design that requires less power.
Hardware implementations of LFSRs are easily configured while software implementations require a large number of instructions. As the number of instructions to implement a software LFSR increases, processing efficiencies decrease. As a result, software implementations are generally limited to 64-bit shift registers and not a full 128-bit shift register due to the number of instructions that are required to be executed for the LFSR implementation and therefore the performance is reduced. In addition, pure hardware LFSRs are not as easy to re-configure as software versions of LFSRs, because the taps of the hardware LFSRs are fixed. What is needed is a technique to dynamically configure the hardware taps of shift registers in an efficient manner.